package com.xique.park.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xique.park.bean.domain.ParkStatisticsInOut;
import com.xique.park.bean.vo.web.statistics.ParkStatisticsInOutVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 车次统计报表 mapper 接口
 *
 * @author xique
 */
@Mapper
public interface ParkStatisticsInOutMapper extends BaseMapper<ParkStatisticsInOut> {

    /**
     * 根据日期分页查询车场车次统计报表
     *
     * @param page      分页参数
     * @param parkId    车场ID
     * @param startTime 开始日期
     * @param endTime   结束日期
     * @return 分页查询结果
     */
    IPage<ParkStatisticsInOutVo> selectPageByDay(@Param("page") Page<ParkStatisticsInOutVo> page,
                                                 @Param("parkId") Long parkId,
                                                 @Param("startTime") String startTime,
                                                 @Param("endTime") String endTime);

    /**
     * 根据月份分页查询车场车次统计报表
     *
     * @param page      分页参数
     * @param parkId    车场ID
     * @param startTime 开始日期
     * @param endTime   结束日期
     * @return 分页查询结果
     */
    IPage<ParkStatisticsInOutVo> selectPageByMonth(@Param("page") Page<ParkStatisticsInOutVo> page,
                                                   @Param("parkId") Long parkId,
                                                   @Param("startTime") String startTime,
                                                   @Param("endTime") String endTime);

    /**
     * 根据年份分页查询车场车次统计报表
     *
     * @param page      分页参数
     * @param parkId    车场ID
     * @param startTime 开始日期
     * @param endTime   结束日期
     * @return 分页查询结果
     */
    IPage<ParkStatisticsInOutVo> selectPageByYear(@Param("page") Page<ParkStatisticsInOutVo> page,
                                                  @Param("parkId") Long parkId,
                                                  @Param("startTime") String startTime,
                                                  @Param("endTime") String endTime);
}
